package done.normal_001_100;

import com.study.common.TreeNode;
import org.junit.Test;

import static com.study.util.LogUtil.info;

/**
 * 98. Validate Binary Search Tree 验证二叉搜索树
 * <p>
 * 给定一个二叉树，判断其是否是一个有效的二叉搜索树。
 * 假设一个二叉搜索树具有如下特征:
 * 节点的左子树只包含小于当前节点的数。
 * 节点的右子树只包含大于当前节点的数。
 * 所有左子树和右子树自身必须也是二叉搜索树。
 * 示例 1:
 * <p>
 * 输入:
 * 2
 * / \
 * 1   3
 * 输出: true
 * 示例 2:
 * <p>
 * 输入:
 * 5
 * / \
 * 1   4
 * / \
 * 3   6
 * 输出: false
 * 解释: 输入为: [5,1,4,null,null,3,6]。
 * 根节点的值为 5 ，但是其右子节点值为 4 。
 * <p>
 * 2019-04-30 07:51
 **/
@SuppressWarnings("all")
public class ValidateBinarySearchTree {

    double min = Double.MIN_VALUE;

    public boolean isValidBST(TreeNode root) {
        // 190430 first
        return false;
    }

    @Test
    public void test() {
//        TreeNode tn = new TreeNode(5,
//                        1, new TreeNode(4,
//                                        3, 6));
//        info(isValidBST(tn));

        TreeNode tn2 = new TreeNode(2,
                1, 3);
        info(isValidBST(tn2));
    }
}












































/*
double last = -Double.MAX_VALUE;
public boolean isValidBST(TreeNode root) {
    if (root == null) {
        return true;
    }
    if (isValidBST(root.left)) {
        if (last < root.val) {
            last = root.val;
            return isValidBST(root.right);
        }
    }
    return false;
}
*/
